home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 November / Macworld (1999-11).dmg / Updaters / WhiteCap 3.0.4 / WhiteCap Source.sit / WhiteCap Source / Common / math / R3Matrix.cpp < prev    next >
Text File  |  1999-07-13  |  1KB  |  49 lines

  1.  
  2.  
  3. #include "R3Matrix.h"
  4.  
  5.  
  6.  
  7. void R3Matrix::setRow( int inRow, PFloat in1, PFloat in2, PFloat in3 ) {
  8.     int off = (inRow-1) * 3;
  9.     
  10.     mM[ off ]    = in1;
  11.     mM[ off+1 ]    = in2;
  12.     mM[ off+2 ] = in3;
  13. }
  14.         
  15.         
  16. void R3Matrix::transform( R3Matrix& inM ) {
  17.     PFloat m[9];
  18.     int i;
  19.     
  20.     for ( i = 0; i < 9; i++ )
  21.         m[i] = mM[i];
  22.         
  23.     mM[0] = inM.mM[0] * m[0] + inM.mM[1] * m[3] + inM.mM[2] * m[6];
  24.     mM[1] = inM.mM[0] * m[1] + inM.mM[1] * m[4] + inM.mM[2] * m[7];
  25.     mM[2] = inM.mM[0] * m[2] + inM.mM[1] * m[5] + inM.mM[2] * m[8];
  26.     
  27.     mM[3] = inM.mM[3] * m[0] + inM.mM[4] * m[3] + inM.mM[5] * m[6];
  28.     mM[4] = inM.mM[3] * m[1] + inM.mM[4] * m[4] + inM.mM[5] * m[7];
  29.     mM[5] = inM.mM[3] * m[2] + inM.mM[4] * m[5] + inM.mM[5] * m[8];
  30.     
  31.     mM[6] = inM.mM[6] * m[0] + inM.mM[7] * m[3] + inM.mM[8] * m[6];
  32.     mM[7] = inM.mM[6] * m[1] + inM.mM[7] * m[4] + inM.mM[8] * m[7];
  33.     mM[8] = inM.mM[6] * m[2] + inM.mM[7] * m[5] + inM.mM[8] * m[8];
  34. }
  35.  
  36.  
  37. void R3Matrix::scale( PFloat inScale ) {
  38.  
  39.     mM[0] *= inScale;
  40.     mM[1] *= inScale;
  41.     mM[2] *= inScale;
  42.     mM[3] *= inScale;
  43.     mM[4] *= inScale;
  44.     mM[5] *= inScale;
  45.     mM[6] *= inScale;
  46.     mM[7] *= inScale;
  47.     mM[8] *= inScale;
  48. }
  49.